import api from '../../../api/index';
import CONFIG from '../../../utils/config';

Page({

  /**
   * 页面的初始数据
   */
  data: {
    q_videos: [], //视频
    q_videoIndex: 0, //视频index
    q_yjz: false, //是否允许预加载
    allList: [],
    baseList: [],
    pageNum: 0,
    pageSize: 5000,
    setShowIndex: 0,
    id: null,
    acId: null
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    const { id } = options
    this.setData({
      id: id,
      acId: id
    })
    var userInfo = wx.getStorageSync('userInfo');
    console.log(userInfo);
    if(!userInfo) {
      this.getorg()
    } else {
      this.getDiscoversArticle()
    }
    
  },
  getorg () {
    const actions = {
      data: {},
      head: {}
    };
    try {
      api.get(`/api/hxhealth/login/orgapp/${CONFIG.orgCode}/${CONFIG.appCode}`,actions,true).then((res) => {
        console.log(res);
        console.log(res.head['Set-Cookie']);
        if (res.head['Set-Cookie']) {
          wx.setStorageSync('accessToken', res.head['Set-Cookie']);
        } 
        this.getDiscoversArticle()
      });
    } catch (e) {
      console.error(e);
    }
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {
    wx.stopBackgroundAudio();
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },
  loadImages (array) {
    array.forEach(item => {
      item.imgsList = []
      item.videosList = []
      if(item.media) {
        const mediaObj = JSON.parse(item.media)
        if(mediaObj.images) {
          mediaObj.images.forEach(img => {
            item.imgsList.push(img.file)
          })
        }
        if(mediaObj.videos) {
          mediaObj.videos.forEach(v => {
            item.videosList.push(v.file)
          })
        }
      }
    })
    return array
  },
  getShowData() {
    let list = []
    if (this.data.allList.length > 5) {
      this.data.allList.forEach((item, index) => {
        if((index >= this.data.setShowIndex) && index < (this.data.setShowIndex + 5)) {
          list.push(item)
        }
      })
    } else {
      list = this.sortByID(this.data.allList)
    }
    this.setData({
      baseList: list
    })
    console.log(list);
    this.setData({
      showList: this.loadImages(this.data.baseList)
    })
    console.log(this.data.showList);
    this.setData({
      q_videos: this.data.showList, //视频
      // 每次加载3个视频，当获取的视频数量小于3时，证明没有后续视频了，也就不需要在进行预加载了
      q_yjz: this.data.showList.length < 5 ? false : true, //是否允许预加载
    })
  },
  sortByID(arr) {
    const newArray = [...arr]; // 创建一个原数组的副本，避免修改原数组
    const index = newArray.findIndex(item => item.id === this.data.id); // 获取指定ID的元素在数组中的索引位置
    if (index !== -1) {
      const foundItem = newArray.splice(index, 1); // 从数组中删除指定ID的元素，并将其保存到变量foundItem中
      newArray.unshift(foundItem[0]); // 将指定ID的元素添加到数组的第一位
    }
    return newArray;
  },
  // 获取发现的文章
  getDiscoversArticle() {
		const actions = {
			data: {
        name: ''
			},
			head: {
				firstresult: this.data.pageNum,
        maxresults: this.data.pageSize,
				bodytype: 'flat',
			}
		};
		try {
			api.post('/api/hxhealth/forum/article/discovers', actions).then((res) => {
				const dataList = res
        this.setData({
          allList: dataList
        })
        this.data.allList.find((item, index) => { 
          if(item.id === this.data.id) {
            this.setData({
              setShowIndex: index,
            })
          }
        })
        this.getShowData()
			}).catch(error => {
        // wx.showToast({
        //   title: error.faultstring,
        //   icon: 'none',
        //   duration: 3000
        // })
        return
      });
		} catch (e) {
      this.getorg()
      console.error(e);
		}
  },

  //动态更新当前视频下标
  q_swiperBindchange: function (e) {
    this.data.q_videos.forEach((item, index) => {
      if (e.detail.current === index) {
        this.setData({
          acId: item.id
        })
      }
    })
    this.setData({
      q_videoIndex: e.detail.current
    })
    // 当加载的视频还剩1个未被滑到时加载下一页
    if (this.data.q_videos.length - (e.detail.current + 1) == 1 && this.data.q_yjz) {
      this.q_yjzVideos() //预加载视频
    }
  },

  //预加载视频
  q_yjzVideos: function () {
    var videoList = []
    const lastValue = this.data.showList[this.data.showList.length - 1]
    let findIndex = 0
    this.data.allList.find((item, index) => { 
      if(item.id === lastValue.id) {
        findIndex = index
      }
    })
    this.data.allList.forEach((item, index) => {
      if((index > findIndex) && index <= (findIndex + 5)) {
        videoList.push(item)
      }
    })
    var array = this.loadImages(this.data.q_videos.concat(videoList)) //concat() 方法：用于连接两个或多个数组,并返回一个新数组
    this.setData({
      q_videos: array, //视频
      q_yjz: videoList.length < 5 ? false : true, //是否允许预加载
    })
  },
})